package org.mushroomdb.engine.optimizer;

import org.mushroomdb.engine.operation.impl.*;
import org.mushroomdb.index.operation.IndexNestedLoopJoinOperation;
import org.mushroomdb.index.operation.IndexSearchOperation;




/**
 * @version 1.0
 * @created 11-Jun-2005 02:10:20
 */
public interface RelationOperationVisitor {

	/**
	 * @param projectionOperation
	 * 
	 */
	public abstract void visitProjection(ProjectionOperation projectionOperation);

	/**
	 * @param scanOperation
	 * 
	 */
	public abstract void visitScan(ScanOperation scanOperation);

	/**
	 * @param selectionOperation
	 * 
	 */
	public abstract void visitSelection(SelectionOperation selectionOperation);

	/**
	 * @param intersectionOperation
	 * 
	 */
	public abstract void visitIntersection(IntersectionOperation intersectionOperation);

	/**
	 * @param unionOperation
	 * 
	 */
	public abstract void visitUnion(UnionOperation unionOperation);

	/**
	 * @param crossProductOperation
	 * 
	 */
	public abstract void visitCrossProduct(CrossProductOperation crossProductOperation);
	
	/**
	 * @param SortMergeJoinOperation
	 * 
	 */
	public abstract void visitSortMergeJoin(SortMergeJoinOperation sortMergeJoinOperation);
	
	/**
	 * 
	 * @param IndexSearchOperation
	 */
	public abstract void visitIndexSearch(IndexSearchOperation indexSearchOperation);

	/**
	 * 
	 * @param indexNestedLoopJoinOperation
	 */
	public abstract void visitIndexNestedLoopJoin(IndexNestedLoopJoinOperation indexNestedLoopJoinOperation);


}